package br.com.nemesis.controle;

import br.com.nemesis.dao.ClienteDAO;
import br.com.nemesis.excecao.PersistenciaExcecao;
import br.com.nemesis.jsf.util.FacesUtil;
import br.com.nemesis.modelo.Bairro;
import br.com.nemesis.modelo.Cidade;
import br.com.nemesis.modelo.Cliente;
import br.com.nemesis.web.Sessao;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;

@ManagedBean(name = "clienteEditarControle")
@RequestScoped
public class ClienteEditarControle  implements IEditar {

    private Long id;
    private Cliente objeto;

    @ManagedProperty(value = "#{sessao}")
    private Sessao sessao;

    public String salvar() {
        try {
            ClienteDAO clienteDAO = new ClienteDAO();
            objeto.setBairro(sessao.getBairro());
            objeto.setCidade(sessao.getCidade());
            if (objeto.getId() == null) {
                clienteDAO.salvar(objeto);
            } else {
                clienteDAO.alterar(objeto);
            }
            clienteDAO = null;
            FacesUtil.msgInformativa("Informação salva com sucesso.");
        } catch (PersistenciaExcecao e) {
            FacesUtil.msgErro(e.getClass().getName() + ": " + e.getMessage());
        }
        return "/cliente/listar.nms?faces-redirect=true";
    }

    public String retornar() {
        return "/cliente/listar.nms?faces-redirect=true";
    }

    public String remover() {
        try {
            ClienteDAO clienteDAO = new ClienteDAO();
            clienteDAO.remover(objeto);
            clienteDAO = null;
        } catch (PersistenciaExcecao e) {
            FacesUtil.msgErro(e.getClass().getName() + ": " + e.getMessage());
        }
        return "/cliente/listar.nms?faces-redirect=true";
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        try {
            ClienteDAO clienteDAO = new ClienteDAO();
            this.objeto = clienteDAO.buscar(id);
            sessao.setBairro(this.objeto.getBairro());
            sessao.setCidade(this.objeto.getCidade());
            clienteDAO = null;
        } catch (PersistenciaExcecao e) {
            FacesUtil.msgErro(e.getClass().getName() + ": " + e.getMessage());
        }
        this.id = id;
    }

    public Cliente getObjeto() {
        if (this.objeto == null) {
            this.objeto = new Cliente();
            this.objeto.setBairro(new Bairro());
            this.objeto.setCidade(new Cidade());
        }
        return objeto;
    }

    public void setObjeto(Cliente objeto) {
        this.objeto = objeto;
    }

    public void setSessao(Sessao sessao) {
        this.sessao = sessao;
    }

}